#ifndef ROBOTMOVEINSTRUCTIONVIEW_H
#define ROBOTMOVEINSTRUCTIONVIEW_H

#include <QWidget>
#include <QTranslator>
#include "robotmoveinstructionview_global.h"
#include "robotmoveinstruction.h"


class ProgramView;

///**
// * @brief The EM_LIMIE_TIMEOUT_TYPE enum        限制超时时间类型
// */
//enum EM_LIMIE_TIMEOUT_TYPE
//{
//    E_LIMIT_TIMEOUT_TYPE_CONST,                 // 常量
//    E_LIMIT_TIMEOUT_TYPE_R                      // R寄存器值
//};

///**
// * @brief The EM_LIMIT_JMP_LABEL_TYPE enum      异常跳转标签类型
// */
//enum EM_LIMIT_JMP_LABEL_TYPE
//{
//    E_LIMIT_JMP_LBL_CONST,                      // 常量
//    E_LIMIT_JMP_LBL_R                           // R寄存器值
//};
///**
// * @brief The EM_ROBOT_MOVE_BUS_TYPE enum          当前总线类型
// */
//enum EM_ROBOT_MOVE_BUS_TYPE
//{
//    EM_ROBOT_MOVE_BUS_CLIENT,                      // 客户端
//    EM_ROBOT_MOVE_BUS_SERVER,                      // 服务器端
//};

namespace Ui {
class RobotMoveInstructionView;
}

class ROBOTMOVEINSTRUCTIONVIEWSHARED_EXPORT RobotMoveInstructionView : public QWidget
{
    Q_OBJECT

public:
    explicit RobotMoveInstructionView(int styleId,QWidget *parent = 0);

    /**
     * @brief getInput          获取界面输入数据
     */
    void getInput();

    /**
     * @brief updateView        更新数据显示到界面
     */
    void updateView();

    /**
     * @brief changeLanguage        更改语言
     * @param language              语言编号
     */
    void changeLanguage(int language);

    void initialDisplayStyle(int styleId);

signals:

    /**
     * @brief instructionEditFinished_Signal    指令编辑完成保存信号
     */
    void instructionEditFinished_Signal();

    /**
     * @brief saveInstruction_Signal            保存编辑完成的指令字符串信号
     * @param instructionStr                    指令字符串
     */
    void saveInstruction_Signal(QString instructionStr);

    /**
     * @brief cleanNote_Signal                  清除注释信号
     */
    void cleanNote_Signal();

private slots:

    /**
     * @brief on_clearNote_Btn_clicked      清除注释响应槽函数
     */
    void on_clearNote_Btn_clicked();

    /**
     * @brief on_save_Btn_clicked           指令保存响应槽函数
     */
    void on_save_Btn_clicked();

    /**
     * @brief on_forward_Btn_clicked        返回上一页响应槽函数
     */
    void on_forward_Btn_clicked();

    void on_SERVER_radioButton_clicked();

    void on_CLIENT_radioButton_clicked();

public:

    /**
     * @brief programView               指令程序主界面对象
     */
    ProgramView *programView;

    /**
     * @brief instructionStr            指令字符串
     */
    QString instructionStr;

//    /**
//     * @brief jmpLableType              异常跳转标签类型
//     */
//    EM_LIMIT_JMP_LABEL_TYPE jmpLableType;

//    /**
//     * @brief limitTimeOutType          超时时间类型
//     */
//    EM_LIMIE_TIMEOUT_TYPE limitTimeOutType;

    /**
     * @brief timeOutValue              超时时间( unit:sec )
     */
    int timeOutValue;

    /**
     * @brief jmpLableValue             跳转标签
     */
    QString jmpLableValue;

    /**
     * @brief noteStr                   指令注释
     */
    QString noteStr;

    /**
     * @brief sendParameterStr          发送参数
     */
    QString sendParameterStr;

    /**
     * @brief waitParameterStr          等待参数
     */
    QString waitParameterStr;

    /**
     * @brief communicationPort         通信端口
     */
    int communicationPort;

    /**
     * @brief localIP                   本地IP
     */
    QString localIP;

    /**
     * @brief serverIP                  服务器IP
     */
    QString serverIP;

    /**
     * @brief robotMoveBusType          当前总线类型
     */
    EM_ROBOT_MOVE_BUS_TYPE robotMoveBusType;

private:

    /**
     * @brief translator                属性编辑界面翻译对象
     */
    QTranslator translator;

    Ui::RobotMoveInstructionView *ui;

    QVector <int> tmpIpVec;
};

#endif // ROBOTMOVEINSTRUCTIONVIEW_H
